import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget,QPushButton,QHBoxLayout,QMessageBox
from PyQt5.QtCore import QCoreApplication

'''
在关闭QWidget时会生成QCloseEvent。我们需要重写closeEvent()这个事件处理器来改变控件的行为
'''
class MyQwidget(QWidget):
    def __init__(self):
        super(QWidget,self).__init__()

        #设置窗口title、尺寸
        self.setWindowTitle('Simple PyQt5 Gui')
        self.resize(300,500)
        self.move(600,400)

        #将控件显示在屏幕上，必须设置shouw才能看到图形效果
        self.show()


    def closeEvent(self,event):
        #设置QMessageBox的title、对话框显示文本、默认按钮的值
        reply = QMessageBox.question(self, 'Message', "Are you sure to quit this window?", QMessageBox.Yes | QMessageBox.No,QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()       #对QMessageBox的值进行判断当为YES时接收该事件，并把事件丢给父类去处理（默认是关闭该控件）
        else:
            event.ignore()       #忽略该事件

if __name__ == "__main__":
    print("hello world")
    app = QApplication(sys.argv)
    myQwidget = MyQwidget()

    # send = QCoreApplication().sender()
    # print("", send.)
    #进入application的主循环，开始接收事件处理并将事件分发给控件，在exit()保证干净退出，当主控件销毁或者调用exit()方法时主循环会停止
    sys.exit(app.exec_())